package com.cskaoyan.config;

import com.cskaoyan.interceptor.HandlerInterceptor1;
import com.cskaoyan.interceptor.HandlerInterceptor2;
import com.cskaoyan.interceptor.HandlerInterceptor3;
import com.cskaoyan.interceptor.HandlerInterceptor4;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author stone
 * @date 2022/08/09 09:50
 */
@ComponentScan("com.cskaoyan.controller")
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer {

    @Autowired
    @Qualifier("handlerInterceptor1")
    HandlerInterceptor handlerInterceptor1;

    // WebMvcConfigurer → addInterceptors
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //registry提供的方法完成配置
        //- HandlerInterceptor是谁
        //- HandlerInterceptor的作用范围是什么
        //- HandlerInterceptor之间的顺序是什么？ → 书写顺序
        // 也可以把HandlerInterceptor注册为容器中的组件，从容器中取出来
        // 如果你的HandlerInterceptor需要使用到容器中的其他组件，就给他注册到容器中，使用其他的组件
        // 如果不需要使用到容器中的其他组件，也可以直接使用构造方法来获得HandlerInterceptor的实例
        //registry.addInterceptor(new HandlerInterceptor1())
        registry.addInterceptor(handlerInterceptor1).addPathPatterns("/hello/**");
        // 默认的作用范围就是/**
        registry.addInterceptor(new HandlerInterceptor2());//.addPathPatterns("/**");
        registry.addInterceptor(new HandlerInterceptor3()).addPathPatterns("/goodbye/**");
        registry.addInterceptor(new HandlerInterceptor4());
    }
}
